package com.mc.order;

import java.util.ArrayList;
import java.util.Arrays;

/**
 * @Description: 顺序表
 * @Author: MoChen
 */
public class SqList {

    static final int MAXSIZE = 10; // 最大长度
    int data[] = new int[MAXSIZE]; // 使用静态数组存放数据
    int length;  // 顺序表的当前长度

    // 初始化一个顺序表
    void initList(SqList L){
        L.length = 8; // 初始长度为0
    }

    // 添加一个数据
    boolean listInsert(SqList L, int i, int e){
        if(i < 1 || i > L.length + 1){ // 当前i的值是否有效
            return false;
        }
        if(L.length == MAXSIZE){ // 当前存储空间是否充盈
            return false;
        }
        for(int j = L.length; j >= i; j--){ // 将第i个元素之后的元素后移
            L.data[j] = L.data[j - 1];
            L.data[j - 1] = e; // 在位置i处放入e
        }
        L.length++; // 长度+1
        return true;
    }

    // 删除一个数据
    boolean listDelete(SqList L, int i, int e){
        if(i < 1 || i > L.length + 1){ // 当前i的值是否有效
            return false;
        }
        e = L.data[i - 1];
        for(int j = i; j <= L.length; j++){ // 将第i个元素之后的元素后移
            L.data[j - 1] = L.data[j]; // 在位置i处放入e
        }
        L.length--; // 长度-1
        return true;
    }

    // 按位查找
    int getElem(SqList L, int i){
        if(i < 1 || i > L.length + 1){
            return 0;
        }
        return L.data[i - 1];
    }

    // 按值查找
    int locateElem(SqList L, int e){
        for(int i = 0; i < L.length; i++){
            if(L.data[i] == e){
                return i + 1;
            }
        }
        return 0;
    }

    @Override
    public String toString() {
        return Arrays.toString(data);
    }
}
